package planes
import comunicaciones.Comunicacion
import java.util.Calendar
import comunicaciones.Llamada
import comunicaciones.LlamadaLocal
import java.util.Date
import comunicaciones.Empresa
import comunicaciones.LlamadaLargaDistancia
import java.util.GregorianCalendar

class PlanHablateTodo extends Object with Plan{
  
  override def casoLlamadaLocal(comunicacion: Comunicacion, fecha: Date, nroDestino: Double, duracion: Int): Double = {
	if(esFinDeSemana(fecha)){
	  //Si es fin de semana, se hace descuento
	    Empresa.valorComunicacion(new LlamadaLocal(comunicacion.fechaComunicacion(), nroDestino, minutosACobrar(fecha, duracion)))
	  }
	else {Empresa.valorComunicacion(comunicacion)}
  }

  
  override def casoLlamadaLargaDistancia(comunicacion: Comunicacion, fecha: Date, nroDestino: Double, duracion: Int, origen: String, destino: String): Double = {
	if(esFinDeSemana(fecha)){
	  //Si es fin de semana, se hace descuento
	    Empresa.valorComunicacion(new LlamadaLargaDistancia(comunicacion.fechaComunicacion(), nroDestino, minutosACobrar(fecha, duracion), origen, destino))
	  }
	else {Empresa.valorComunicacion(comunicacion)}
  }
    
  def minutosACobrar(fecha: Date, duracion: Int): Int = {
    var minutos = 0
	  //Si la llamada dura mas de 5 minutos, solo se tienen en cuenta esos 5
	  if(duracion > 5){
	    minutos = 5}
	    else{
	      //Si dura menos, solo se tendran en cuenta esos minutos
	      minutos = duracion
	    }
	  return minutos
    
  }
    
  

  def esFinDeSemana(fecha: Date): Boolean = {
    
    var calendario = Calendar.getInstance()
    calendario.add(Calendar.YEAR, fecha.getYear())
    calendario.add(Calendar.MONTH, fecha.getMonth())
    calendario.add(Calendar.DATE, fecha.getDate())
    return calendario.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY | calendario.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY
    
    
  }

}